iT邦幫忙

2025 iThome 鐵人賽

DAY 14
0
AI & Data

AI 營養師 + Web3 數位健康護照系列 第 14

Day14. 使用 Flask + Google Fit 獲取個人每日健康相關資料

  • 分享至 

  • xImage
  •  

Google Fit 是什麼?

Google Fit 是一個健康與健身資料平台,它能匯集來自各種穿戴裝置、應用程式的運動、睡眠、心率等健康數據。

Why Google Fit?

因為我有在用XD

實作

在 Google Cloud Platform 取得 API 憑證

在 Google Cloud Platform (以下簡稱 GCP) 上建立新專案,建立時請自訂一個專案名稱。接著到「API 與服務」,啟用「Fitness API」

https://ithelp.ithome.com.tw/upload/images/20250926/20129220cmXewVhTvd.jpg

接著請完成相關設定

https://ithelp.ithome.com.tw/upload/images/20250926/20129220cORs4Jxqus.jpg

找到「API 與服務」 > 「OAuth 同意畫面」 > 「資料存取權」,在 「範圍」 頁面,點擊 「新增或移除範圍」,搜尋與 Google Fit 相關的功能。這些權限決定應用程式能讀取哪些類型的 Google Fit 資料。

https://ithelp.ithome.com.tw/upload/images/20250926/20129220PSUPNi35N7.jpg

新增測試使用者:

在 「測試使用者」 (Test users) 頁面,點擊 「新增使用者」 (Add users)。輸入用來測試的 Google 帳號,然後點擊 「儲存」 (Save)。

這一步很重要!!如果沒有新增測試使用者,待會 「測試」的時候,會被拒絕。(「發布應用程式」(Publish App) 後,所有擁有 Google 帳號的使用者都可以使用這個應用程式,就不會有這個問題。)

建立憑證

選擇 「Web 應用程式」,並自訂名稱。在 「已授權的重新導向 URI」 欄位中,輸入這個應用程式回調網址。在本地端開發時,通常是 http://127.0.0.1:5000/oauth2callback 
點擊「建立」,就會取得一組用戶端 ID (Client ID)&用戶端密鑰 (Client Secret),可以下載。

溫馨小提醒:
下載後,改檔名為「credentials.json」,和 main.py 一起放在同一層,稍後就會用到。

安裝函式庫

建立虛擬環境與安裝函式庫:

# 建立並啟用虛擬環境
python -m venv venv
source venv/bin/activate  
# 在 Windows 上使用
source venv/Scripts/activate  

# 安裝 Google 認證函式庫
pip install google-auth google-auth-oauthlib google-api-python-client

修改 main.py 檔案:

  1. 增加 Google Fit 登入連結畫面:
import os
from flask import Flask, redirect, url_for, request, render_template

app = Flask(__name__)

@app.route('/')
def index():
    return '<h1>歡迎來到我的 Google Fit!</h1><a href="/authorize">點此登入並授權</a>'

if __name__ == '__main__':
    app.run(debug=True)

執行

https://ithelp.ithome.com.tw/upload/images/20250928/20129220Qo6CuGVWvU.jpg

  1. 啟用 Google Fit 登入連結:

在 main.py 中加入以下程式碼:

from google_auth_oauthlib.flow import Flow
from google.oauth2.credentials import Credentials
from google.auth.transport.requests import Request
import googleapiclient.discovery

@app.route('/authorize')

# 程式碼整理中,請稍等...(晚點補上)
  1. 使用者授權流程:

在 main.py 中再加入以下程式碼:

@app.route('/oauth2callback')

# 程式碼整理中,請稍等...(晚點補上)
  1. 回傳資料:

在 main.py 中再加入以下程式碼:

@app.route('/fetch_fit_data')

# 程式碼整理中,請稍等...(晚點補上)

執行

python main.py

在瀏覽器開啟 http://127.0.0.1:5000/

https://ithelp.ithome.com.tw/upload/images/20250926/20129220CvRs8KzXUt.jpg

點此登入並授權

https://ithelp.ithome.com.tw/upload/images/20250926/20129220KgXstzcUTm.jpg

溫馨小提醒:
這是查詢的期間,如果選到「未來日期」的話,API 回傳的數據將會是空的 (bucket 列表可能為空)。強烈建議將查詢時間設為有實際活動數據的日期來進行測試。

https://ithelp.ithome.com.tw/upload/images/20250926/201292209twuX5N7Tv.jpg

回傳 2025-09-25 當天的數據

https://ithelp.ithome.com.tw/upload/images/20250926/20129220z3NngqfYYT.jpg

舒安表示:
這次把 Google Fit 功能全部處理完後,才回過來拆解寫文章,所以才會一直出現「程式碼整理中,請稍等...(晚點補上)」,真是不好意思XD


上一篇
Day13. 用 Flask 規劃 AI 營養顧問的專案架構
下一篇
Day15. 規劃 AI 營養顧問的人性化 UI 頁面 Ep1:index.html
系列文
AI 營養師 + Web3 數位健康護照18
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言